import Pretty.Defs.Basic import Pretty.Supports.Pareto import Pretty.Supports.MergeBasic lemmamerge_first_dom (ms₁ : List Meas) (h_pareto₂ : paretoms₁: List MeasF (F: ?m.8m₂ ::m₂: ?m.22ms₂)) (h_dom : dominatesms₂: ?m.34FF: ?m.8m₁m₁: ?m.49m₂) : ∃m₂: ?m.22n, mergen: ?m.83F ⟨F: ?m.8m₁ ::m₁: ?m.49ms₁,ms₁: List Measm₂ ::m₂: ?m.22ms₂⟩ =ms₂: ?m.34m₁ :: mergem₁: ?m.49F ⟨F: ?m.8ms₁,ms₁: List Measms₂.dropms₂: ?m.34n⟩ ∧ ∀ (n: ?m.83m : Meas),m: Measm ∈m: Measms₂.takems₂: ?m.34n → dominatesn: ?m.83FF: ?m.8m₁m₁: ?m.49m :=m: MeasGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
h_pareto₂: pareto F [m₂]
nilα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
head✝: Meas
tail✝: List Meas
tail_ih✝: pareto F (m₂ :: tail✝) → ∃ n, merge F (m₁ :: ms₁, m₂ :: tail✝) = m₁ :: merge F (ms₁, List.drop n tail✝) ∧ ∀ (m : Meas), m ∈ List.take n tail✝ → dominates F m₁ m = true
h_pareto₂: pareto F (m₂ :: head✝ :: tail✝)
consGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_dom✝: dominates F m₁ hd = true
first_domα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom✝: ¬dominates F m₁ hd = true
h_dom✝: dominates F hd m₁ = true
second_domα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁✝: ¬dominates F m₁ hd = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: m₁.last > hd.last
first_lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁✝: ¬dominates F m₁ hd = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
second_lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_dom_hd: dominates F m₁ hd = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_dom_hd: dominates F m₁ hd = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_dom_hd: dominates F m₁ hd = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_dom_hd: dominates F m₁ hd = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
leftα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
rightα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_dom_hd: dominates F m₁ hd = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_dom_hd: dominates F m₁ hd = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
m: Meas
h: m ∈ List.take (n + 1) (hd :: tl)α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
m: Meas
h: m = hd ∨ m ∈ List.take n tlα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
m: Meas
h✝: m = hd
inlα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
m: Meas
h✝: m ∈ List.take n tl
inrα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
m: Meas
h: m = hdα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
m: Meas
h_pareto₂: pareto F (m₂ :: m :: tl)
h_dom_hd: dominates F m₁ m = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
m: Meas
h_pareto₂: pareto F (m₂ :: m :: tl)
h_dom_hd: dominates F m₁ m = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
m: Meas
h: m = hdGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_dom_hd: dominates F m₁ hd = true
ih: ∃ n, merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
n: ℕ
h_left: merge F (m₁ :: ms₁, tl) = m₁ :: merge F (ms₁, List.drop n tl)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
m: Meas
h: m ∈ List.take n tlGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom: ¬dominates F m₁ hd = true
h_bad: dominates F hd m₁ = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom: ¬dominates F m₁ hd = true
h_bad: dominates F hd m₁ = true
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.costα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom: ¬dominates F m₁ hd = true
h_bad: dominates F hd m₁ = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom: ¬dominates F m₁ hd = true
h_bad: dominates F hd m₁ = true
h_pareto₂: hd.last < m₂.last ∧ Factory.lt F m₂.cost hd.costα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom: ¬dominates F m₁ hd = true
h_bad: dominates F hd m₁ = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom: ¬dominates F m₁ hd = true
h_pareto₂: hd.last < m₂.last ∧ Factory.lt F m₂.cost hd.cost
h_bad: hd.last ≤ m₁.last ∧ Factory.le F hd.cost m₁.cost = true
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom: ¬dominates F m₁ hd = true
h_bad: dominates F hd m₁ = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂: ¬dominates F hd m₁ = true
h_last: m₁.last > hd.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂: ¬dominates F hd m₁ = true
h_last: m₁.last > hd.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂: ¬dominates F hd m₁ = true
h_last: m₁.last > hd.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂: ¬dominates F hd m₁ = true
h_last: m₁.last > hd.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂: ¬dominates F hd m₁ = true
h_last: m₁.last > hd.lastGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: m₁.last ≤ hd.last → Factory.le F m₁.cost hd.cost = falseα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: m₁.last ≤ hd.last → Factory.le F m₁.cost hd.cost = falseGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: m₁.last ≤ hd.last → Factory.le F m₁.cost hd.cost = falsem₁.last ≤ hd.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: m₁.last ≤ hd.last → Factory.le F m₁.cost hd.cost = falsem₁.last ≤ hd.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: m₁.last ≤ hd.last → Factory.le F m₁.cost hd.cost = falsem₁.last ≤ hd.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: m₁.last ≤ hd.last → Factory.le F m₁.cost hd.cost = false
hm₁.last < hd.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: m₁.last ≤ hd.last → Factory.le F m₁.cost hd.cost = falsem₁.last ≤ hd.lastGoals accomplished! 🐙Goals accomplished! 🐙α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.le F m₁.cost hd.cost = falseα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.le F m₁.cost hd.cost = false
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.costα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.le F m₁.cost hd.cost = false
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, ¬Factory.le F c₁ c₂ = true ↔ Factory.lt F c₂ c₁α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.le F m₁.cost hd.cost = false
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.le F m₁.cost hd.cost = false
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.lt F hd.cost m₁.cost
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.lt F hd.cost m₁.cost
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.lt F hd.cost m₁.cost
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁α✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.lt F hd.cost m₁.cost
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁
h_trans: Factory.lt F m₂.cost m₁.costα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.lt F hd.cost m₁.cost
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁
h_trans: Factory.lt F m₂.cost m₁.costα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.lt F hd.cost m₁.cost
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁
h_trans: ¬Factory.le F m₁.cost m₂.cost = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.lt F hd.cost m₁.cost
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁
h_trans: ¬Factory.le F m₁.cost m₂.cost = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.lt F hd.cost m₁.cost
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁
h_trans: ¬Factory.le F m₁.cost m₂.cost = trueα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.lastα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.last
h_dom: m₁.last ≤ m₂.last ∧ Factory.le F m₁.cost m₂.cost = true
h_non_dom₁: Factory.lt F hd.cost m₁.cost
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁
h_trans: Falseα✝: Type
F: Factory α✝
m₂, m₁: Meas
ms₁: List Meas
h_dom: dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₂: pareto F (m₂ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: ms₁, m₂ :: tl) = m₁ :: merge F (ms₁, List.drop n tl) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₁ m = true
h_non_dom₁: ¬dominates F m₁ hd = true
h_non_dom₂✝: ¬dominates F hd m₁ = true
h✝: hd.last > m₁.lastlemmaGoals accomplished! 🐙merge_second_dom (merge_second_dom: ∀ {α : Type} {F : Factory α} {m₁ : Meas} {ms₁ : List Meas} {m₂ : Meas} (ms₂ : List Meas), pareto F (m₁ :: ms₁) → dominates F m₂ m₁ = true → ¬dominates F m₁ m₂ = true → ∃ n, merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = truems₂ : List Meas) (h_pareto₁ : paretoms₂: List MeasF (F: ?m.24314m₁ ::m₁: ?m.24328ms₁)) (h_dom : dominatesms₁: ?m.24340FF: ?m.24314m₂m₂: ?m.24355m₁) (h_non_dom : ¬ dominatesm₁: ?m.24328FF: ?m.24314m₁m₁: ?m.24328m₂) : ∃m₂: ?m.24355n, (mergen: ?m.24471F ⟨F: ?m.24314m₁ ::m₁: ?m.24328ms₁,ms₁: ?m.24340m₂ ::m₂: ?m.24355ms₂⟩) =ms₂: List Measm₂ :: (mergem₂: ?m.24355F ⟨F: ?m.24314ms₁.dropms₁: ?m.24340n,n: ?m.24471ms₂⟩) ∧ ∀ (ms₂: List Measm : Meas),m: Measm ∈m: Measms₁.takems₁: ?m.24340n → dominatesn: ?m.24471FF: ?m.24314m₂m₂: ?m.24355m :=m: MeasGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
h_pareto₁: pareto F [m₁]
nilα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
head✝: Meas
tail✝: List Meas
tail_ih✝: pareto F (m₁ :: tail✝) → ∃ n, merge F (m₁ :: tail✝, m₂ :: ms₂) = m₂ :: merge F (List.drop n tail✝, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tail✝ → dominates F m₂ m = true
h_pareto₁: pareto F (m₁ :: head✝ :: tail✝)
consGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: pareto F (m₁ :: tl) → ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_pareto₁: pareto F (m₁ :: hd :: tl)α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: pareto F (m₁ :: tl) → ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_pareto₁: pareto F (m₁ :: hd :: tl)α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_dom✝: dominates F hd m₂ = true
first_domα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom✝: ¬dominates F hd m₂ = true
h_dom✝: dominates F m₂ hd = true
second_domα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁✝: ¬dominates F hd m₂ = true
h_non_dom₂✝: ¬dominates F m₂ hd = true
h✝: hd.last > m₂.last
first_lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁✝: ¬dominates F hd m₂ = true
h_non_dom₂✝: ¬dominates F m₂ hd = true
h✝: m₂.last > hd.last
second_lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: pareto F (m₁ :: tl) → ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_pareto₁: pareto F (m₁ :: hd :: tl)α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_bad: dominates F hd m₂ = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_bad: dominates F hd m₂ = true
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_bad: dominates F hd m₂ = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h_bad: hd.last ≤ m₂.last ∧ Factory.le F hd.cost m₂.cost = true
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_bad: dominates F hd m₂ = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: pareto F (m₁ :: tl) → ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_pareto₁: pareto F (m₁ :: hd :: tl)α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = true
ih: ∃ n, merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = true
ih: ∃ n, merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
n: ℕ
h_left: merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = true
ih: ∃ n, merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
n: ℕ
h_left: merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = true
ih: ∃ n, merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
n: ℕ
h_left: merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
leftα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = true
ih: ∃ n, merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
n: ℕ
h_left: merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
rightα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = true
ih: ∃ n, merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
n: ℕ
h_left: merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = true
ih: ∃ n, merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
n: ℕ
h_left: merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = true
ih: ∃ n, merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
n: ℕ
h_left: merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = true
ih: ∃ n, merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
n: ℕ
h_left: merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = true
ih: ∃ n, merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
n: ℕ
h_left: merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
m: Meas
h: m ∈ List.take n tlα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
h_non_dom_hd: ¬dominates F hd m₂ = true
h_dom_hd: dominates F m₂ hd = true
ih: ∃ n, merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
n: ℕ
h_left: merge F (tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂)
h_right: ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: pareto F (m₁ :: tl) → ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_pareto₁: pareto F (m₁ :: hd :: tl)α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: hd.last > m₂.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: m₂.last ≤ hd.last → Factory.le F m₂.cost hd.cost = falseα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: hd.last > m₂.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: m₂.last ≤ hd.last → Factory.le F m₂.cost hd.cost = falseGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: m₂.last ≤ hd.last → Factory.le F m₂.cost hd.cost = falsem₂.last ≤ hd.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: m₂.last ≤ hd.last → Factory.le F m₂.cost hd.cost = falsem₂.last ≤ hd.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: m₂.last ≤ hd.last → Factory.le F m₂.cost hd.cost = falsem₂.last ≤ hd.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: m₂.last ≤ hd.last → Factory.le F m₂.cost hd.cost = false
hm₂.last < hd.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: m₂.last ≤ hd.last → Factory.le F m₂.cost hd.cost = falsem₂.last ≤ hd.lastGoals accomplished! 🐙Goals accomplished! 🐙α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.le F m₂.cost hd.cost = falseα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: hd.last > m₂.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.le F m₂.cost hd.cost = false
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: hd.last > m₂.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.le F m₂.cost hd.cost = false
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, ¬Factory.le F c₁ c₂ = true ↔ Factory.lt F c₂ c₁α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: hd.last > m₂.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.le F m₂.cost hd.cost = false
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: hd.last > m₂.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.le F m₂.cost hd.cost = false
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.lt F hd.cost m₂.cost
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.lt F hd.cost m₂.cost
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.lt F hd.cost m₂.cost
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: hd.last > m₂.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.lt F hd.cost m₂.cost
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁
h_trans: Factory.lt F m₁.cost m₂.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: hd.last > m₂.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.lt F hd.cost m₂.cost
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁
h_trans: Factory.lt F m₁.cost m₂.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.lt F hd.cost m₂.cost
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁
h_trans: ¬Factory.le F m₂.cost m₁.cost = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.lt F hd.cost m₂.cost
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁
h_trans: ¬Factory.le F m₂.cost m₁.cost = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.lt F hd.cost m₂.cost
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁
h_trans: ¬Factory.le F m₂.cost m₁.cost = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: hd.last > m₂.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_last: hd.last > m₂.last
h_dom: m₂.last ≤ m₁.last ∧ Factory.le F m₂.cost m₁.cost = true
h_non_dom₂: Factory.lt F hd.cost m₂.cost
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h': ∀ {c₁ c₂ : α✝}, Factory.le F c₁ c₂ = false ↔ Factory.lt F c₂ c₁
h_trans: Falseα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: hd.last > m₂.lastGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
ih: pareto F (m₁ :: tl) → ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_pareto₁: pareto F (m₁ :: hd :: tl)α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: m₂.last > hd.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: ¬m₂.last < hd.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: m₂.last > hd.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: ¬m₂.last < hd.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: m₂.last > hd.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: ¬m₂.last < hd.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_dom: dominates F m₂ m₁ = true
h_non_dom: ¬dominates F m₁ m₂ = true
hd: Meas
tl: List Meas
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih: ∃ n, merge F (m₁ :: tl, m₂ :: ms₂) = m₂ :: merge F (List.drop n tl, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n tl → dominates F m₂ m = true
h_non_dom₁: ¬dominates F hd m₂ = true
h_non_dom₂: ¬dominates F m₂ hd = true
h_last: m₂.last > hd.lastlemmaGoals accomplished! 🐙merge_head_either (h_pareto₁ : paretomerge_head_either: ∀ {α : Type} {F : Factory α} {m₁ : Meas} {ms₁ : List Meas} {m₂ : Meas} {ms₂ : List Meas}, pareto F (m₁ :: ms₁) → pareto F (m₂ :: ms₂) → m₁ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ []) ∨ m₂ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])F (F: ?m.49607m₁ ::m₁: ?m.49617ms₁)) (h_pareto₂ : paretoms₁: ?m.49625F (F: ?m.49607m₂ ::m₂: ?m.49638ms₂)) :ms₂: ?m.49651m₁ = List.head (mergem₁: ?m.49617F ⟨F: ?m.49607m₁ ::m₁: ?m.49617ms₁,ms₁: ?m.49625m₂ ::m₂: ?m.49638ms₂⟩) (ms₂: ?m.49651Goals accomplished! 🐙Goals accomplished! 🐙) ∨Goals accomplished! 🐙m₂ = List.head (mergem₂: ?m.49638F ⟨F: ?m.49607m₁ ::m₁: ?m.49617ms₁,ms₁: ?m.49625m₂ ::m₂: ?m.49638ms₂⟩) (ms₂: ?m.49651Goals accomplished! 🐙Goals accomplished! 🐙) :=Goals accomplished! 🐙Goals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom✝: dominates F m₁ m₂ = true
first_domα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom✝: ¬dominates F m₁ m₂ = true
h_dom✝: dominates F m₂ m₁ = true
second_domα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₁.last > m₂.last
first_lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.last
second_lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop w✝ ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₂ → dominates F m₁ m = true
hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop w✝ ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₂ → dominates F m₁ m = true
hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop w✝ ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₂ → dominates F m₁ m = true
hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop w✝ ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₂ → dominates F m₁ m = true
hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop w✝ ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₂ → dominates F m₁ m = true
hm₁ = List.get ?m.50375 { val := ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }, isLt := (_ : ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) } < List.length ?m.50375) }α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop w✝ ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₂ → dominates F m₁ m = true
h.hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop w✝ ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₂ → dominates F m₁ m = trueList Measα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop w✝ ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₂ → dominates F m₁ m = true
hm₁ = List.get ?m.50375 { val := ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }, isLt := (_ : ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) } < List.length ?m.50375) }α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop w✝ ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₂ → dominates F m₁ m = true
h.hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop w✝ ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₂ → dominates F m₁ m = trueList Measα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop w✝ ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₂ → dominates F m₁ m = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop w✝ ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₂ → dominates F m₁ m = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop w✝ ms₁, ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₁ → dominates F m₂ m = true
hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop w✝ ms₁, ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₁ → dominates F m₂ m = true
hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop w✝ ms₁, ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₁ → dominates F m₂ m = true
hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop w✝ ms₁, ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₁ → dominates F m₂ m = true
hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop w✝ ms₁, ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₁ → dominates F m₂ m = true
hm₂ = List.get ?m.50797 { val := ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }, isLt := (_ : ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) } < List.length ?m.50797) }α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop w✝ ms₁, ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₁ → dominates F m₂ m = true
h.hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop w✝ ms₁, ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₁ → dominates F m₂ m = trueList Measα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop w✝ ms₁, ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₁ → dominates F m₂ m = true
hm₂ = List.get ?m.50797 { val := ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }, isLt := (_ : ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) } < List.length ?m.50797) }α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop w✝ ms₁, ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₁ → dominates F m₂ m = true
h.hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop w✝ ms₁, ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₁ → dominates F m₂ m = trueList Measα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop w✝ ms₁, ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₁ → dominates F m₂ m = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
w✝: ℕ
left✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop w✝ ms₁, ms₂)
right✝: ∀ (m : Meas), m ∈ List.take w✝ ms₁ → dominates F m₂ m = trueGoals accomplished! 🐙Goals accomplished! 🐙Goals accomplished! 🐙Goals accomplished! 🐙Goals accomplished! 🐙lemmaGoals accomplished! 🐙merge_preserves_pareto (h_pareto₁ : paretoh_pareto₁: pareto F ms₁FF: ?m.53466ms₁) (ms₁: ?m.53473h_pareto₂ : paretoh_pareto₂: pareto F ms₂FF: ?m.53466ms₂) : paretoms₂: ?m.53483F (mergeF: ?m.53466F ⟨F: ?m.53466ms₁,ms₁: ?m.53473ms₂⟩) :=ms₂: ?m.53483Goals accomplished! 🐙Goals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F []
nilα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
head✝: Meas
tail✝: List Meas
tail_ih✝: pareto F tail✝ → pareto F (merge F (m₁ :: ms₁, tail✝))
h_pareto₂: pareto F (head✝ :: tail✝)
consGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom✝: dominates F m₁ m₂ = true
first_domα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom✝: ¬dominates F m₁ m₂ = true
h_dom✝: dominates F m₂ m₁ = true
second_domα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₁.last > m₂.last
first_lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.last
second_lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = truepareto F ms₂α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
mMeasGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
h_pareto₁pareto F ms₁α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
h_pareto₂α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
h_pareto₁pareto F ms₁α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = truepareto F ms₁α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
mMeasα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = truepareto F ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))
nilα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
head✝: Meas
tail✝: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (head✝ :: tail✝) → pareto F ms₂ → pareto F (merge F (head✝ :: tail✝, ms₂))
h_pareto₁: pareto F (m₁ :: head✝ :: tail✝)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: head✝ :: tail✝, ms₂))
consα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))
h_lastm₁.last > m₂.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))
h_costFactory.lt F m₁.cost m₂.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))
hα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))
h_costFactory.lt F m₁.cost m₂.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))Factory.lt F m₁.cost m₂.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))Factory.lt F m₁.cost m₂.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))¬Factory.le F m₂.cost m₁.cost = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))¬Factory.le F m₂.cost m₁.cost = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))Factory.lt F m₁.cost m₂.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))
h_non_dom₂: m₂.last ≤ m₁.last → Factory.le F m₂.cost m₁.cost = false¬Factory.le F m₂.cost m₁.cost = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
ih₁: ∀ {ms₂ : List Meas}, pareto F [] → pareto F ms₂ → pareto F (merge F ([], ms₂))
h_pareto₁: pareto F [m₁]
ih₂: pareto F ms₂ → pareto F (merge F ([m₁], ms₂))Factory.lt F m₁.cost m₂.costGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
h_merge: merge F (hd :: tl, m₂ :: ms₂) = []
nilpareto F [m₁]α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
consα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
h_merge: merge F (hd :: tl, m₂ :: ms₂) = []pareto F [m₁]Goals accomplished! 🐙α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_lastm₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_costFactory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
hα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝m₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)m₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝m₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h✝: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])
inlm₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h✝: m₂ = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])
inrm₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝m₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])m₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.costm₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])m₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h: hd = head✝m₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])m₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
tail✝: List Meas
h_pareto₁': pareto F (hd :: tl)
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h_merge: merge F (hd :: tl, m₂ :: ms₂) = hd :: tail✝m₁.last > hd.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])m₁.last > head✝.lastGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝m₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: m₂ = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])m₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: m₂ = head✝m₁.last > head✝.lastα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: m₂ = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])m₁.last > head✝.lastGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h✝: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])
inlFactory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h✝: m₂ = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])
inrFactory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.costFactory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h: hd = head✝Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h_pareto₁: m₁.last > hd.last ∧ Factory.lt F m₁.cost hd.cost
h: hd = head✝Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h_pareto₁: m₁.last > head✝.last ∧ Factory.lt F m₁.cost head✝.cost
h: hd = head✝Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h_pareto₁: m₁.last > head✝.last ∧ Factory.lt F m₁.cost head✝.cost
h: hd = head✝Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h_pareto₁: m₁.last > head✝.last ∧ Factory.lt F m₁.cost head✝.cost
h: hd = head✝Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: hd = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])Factory.lt F m₁.cost head✝.costGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: m₂ = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: m₂ = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: m₂ = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])¬Factory.le F head✝.cost m₁.cost = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: m₂ = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])¬Factory.le F head✝.cost m₁.cost = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: m₂ = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: m₂ = head✝¬Factory.le F head✝.cost m₁.cost = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: m₂ = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
tail✝: List Meas
h_pareto₁': pareto F (hd :: tl)
h_merge: merge F (hd :: tl, m₂ :: ms₂) = m₂ :: tail✝¬Factory.le F m₂.cost m₁.cost = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: m₂ = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])Factory.lt F m₁.cost head✝.costα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
tail✝: List Meas
h_pareto₁': pareto F (hd :: tl)
h_merge: merge F (hd :: tl, m₂ :: ms₂) = m₂ :: tail✝
h_non_dom₂: m₂.last ≤ m₁.last → Factory.le F m₂.cost m₁.cost = false¬Factory.le F m₂.cost m₁.cost = trueα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁': pareto F (hd :: tl)
h: m₂ = List.head (merge F (hd :: tl, m₂ :: ms₂)) (_ : merge F (hd :: tl, m₂ :: ms₂) ≠ [])Factory.lt F m₁.cost head✝.costGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₂α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
h_pareto₁α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
hα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝
mMeasα✝: Type
F: Factory α✝
m₁, m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F (hd :: tl) → pareto F ms₂ → pareto F (merge F (hd :: tl, ms₂))
h_pareto₁: pareto F (m₁ :: hd :: tl)
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: hd :: tl, ms₂))
head✝: Meas
tail✝: List Meas
h_merge: merge F (hd :: tl, m₂ :: ms₂) = head✝ :: tail✝Goals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]
nilα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
head✝: Meas
tail✝: List Meas
ih₂: pareto F (head✝ :: tail✝) → pareto F (merge F (m₁ :: ms₁, head✝ :: tail✝))
h_pareto₂: pareto F (m₂ :: head✝ :: tail✝)
consα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]
h_lastm₂.last > m₁.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]
h_costFactory.lt F m₂.cost m₁.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]
hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]
h_costFactory.lt F m₂.cost m₁.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]Factory.lt F m₂.cost m₁.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]Factory.lt F m₂.cost m₁.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]¬Factory.le F m₁.cost m₂.cost = trueα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]¬Factory.le F m₁.cost m₂.cost = trueα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]Factory.lt F m₂.cost m₁.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]
h_non_dom₁: m₁.last ≤ m₂.last → Factory.le F m₁.cost m₂.cost = false¬Factory.le F m₁.cost m₂.cost = trueα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
ih₂: pareto F [] → pareto F (merge F (m₁ :: ms₁, []))
h_pareto₂: pareto F [m₂]Factory.lt F m₂.cost m₁.costGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
ih₂: pareto F ms₂ → pareto F (merge F (m₁ :: ms₁, ms₂))
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_merge: merge F (m₁ :: ms₁, hd :: tl) = []
nilpareto F [m₂]α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
consα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
h_merge: merge F (m₁ :: ms₁, hd :: tl) = []pareto F [m₂]Goals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_lastm₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_costFactory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝m₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)m₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝m₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h✝: m₁ = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])
inlm₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h✝: hd = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])
inrm₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝m₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])m₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = head✝m₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])m₂.last > head✝.lastGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝m₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: hd = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])m₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: hd = head✝m₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: hd = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])m₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
tail✝: List Meas
h_pareto₂': pareto F (hd :: tl)
h_merge: merge F (m₁ :: ms₁, hd :: tl) = hd :: tail✝m₂.last > hd.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: hd = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])m₂.last > head✝.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
tail✝: List Meas
h_pareto₂': pareto F (hd :: tl)
h_merge: merge F (m₁ :: ms₁, hd :: tl) = hd :: tail✝
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.costm₂.last > hd.lastα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: hd = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])m₂.last > head✝.lastGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h✝: m₁ = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])
inlFactory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h✝: hd = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])
inrFactory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])¬Factory.le F head✝.cost m₂.cost = trueα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])¬Factory.le F head✝.cost m₂.cost = trueα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = head✝¬Factory.le F head✝.cost m₂.cost = trueα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = head✝Factory.le F m₁.cost m₂.cost = falseα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = head✝
h_non_dom₁: m₁.last ≤ m₂.last → Factory.le F m₁.cost m₂.cost = falseFactory.le F m₁.cost m₂.cost = falseα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: m₁ = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])Factory.lt F m₂.cost head✝.costGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: hd = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: hd = head✝Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: hd = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
tail✝: List Meas
h_pareto₂': pareto F (hd :: tl)
h_merge: merge F (m₁ :: ms₁, hd :: tl) = hd :: tail✝Factory.lt F m₂.cost hd.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: hd = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])Factory.lt F m₂.cost head✝.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
tail✝: List Meas
h_pareto₂': pareto F (hd :: tl)
h_merge: merge F (m₁ :: ms₁, hd :: tl) = hd :: tail✝
h_pareto₂: m₂.last > hd.last ∧ Factory.lt F m₂.cost hd.costFactory.lt F m₂.cost hd.costα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
h_pareto₂': pareto F (hd :: tl)
h: hd = List.head (merge F (m₁ :: ms₁, hd :: tl)) (_ : merge F (m₁ :: ms₁, hd :: tl) ≠ [])Factory.lt F m₂.cost head✝.costGoals accomplished! 🐙α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝α✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
hα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝
mMeasα✝: Type
F: Factory α✝
m₁: Meas
ms₁: List Meas
ih₁: ∀ {ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → pareto F (merge F (ms₁, ms₂))
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
hd: Meas
tl: List Meas
ih₂: pareto F (hd :: tl) → pareto F (merge F (m₁ :: ms₁, hd :: tl))
h_pareto₂: pareto F (m₂ :: hd :: tl)
head✝: Meas
tail✝: List Meas
h_merge: merge F (m₁ :: ms₁, hd :: tl) = head✝ :: tail✝lemmaGoals accomplished! 🐙merge_pareto_subset (h_in :m ∈ mergem: ?m.64633F ⟨F: ?m.64653ms₁,ms₁: ?m.64685ms₂⟩) (ms₂: ?m.64714h_pareto₁ : paretoh_pareto₁: pareto F ms₁FF: ?m.64653ms₁) (ms₁: ?m.64685h_pareto₂ : paretoh_pareto₂: pareto F ms₂FF: ?m.64653ms₂) :ms₂: ?m.64714m ∈m: ?m.64633ms₁ ∨ms₁: ?m.64685m ∈m: ?m.64633ms₂ :=ms₂: ?m.64714Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: merge F (ms₁, ms₂) = []
h_in: m ∈ []
nilα✝: Type
m: Meas
F: Factory α✝
head✝: Meas
tail✝: List Meas
tail_ih✝: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tail✝ → m ∈ tail✝ → m ∈ ms₁ ∨ m ∈ ms₂
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: merge F (ms₁, ms₂) = head✝ :: tail✝
h_in: m ∈ head✝ :: tail✝
consα✝: Type
m: Meas
F: Factory α✝
head✝: Meas
tail✝: List Meas
tail_ih✝: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tail✝ → m ∈ tail✝ → m ∈ ms₁ ∨ m ∈ ms₂
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: merge F (ms₁, ms₂) = head✝ :: tail✝
h_in: m ∈ head✝ :: tail✝
consα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: merge F (ms₁, ms₂) = m :: tl
headα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: merge F (ms₁, ms₂) = hd :: tl
a✝: List.Mem m tl
tailα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
ms₂: List Meas
h_pareto₂: pareto F ms₂
h_pareto₁: pareto F []
h: merge F ([], ms₂) = m :: tl
nilα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
ms₂: List Meas
h_pareto₂: pareto F ms₂
head✝: Meas
tail✝: List Meas
h_pareto₁: pareto F (head✝ :: tail✝)
h: merge F (head✝ :: tail✝, ms₂) = m :: tl
consGoals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F []
h: merge F (m₁ :: ms₁, []) = m :: tl
nilα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
head✝: Meas
tail✝: List Meas
h_pareto₂: pareto F (head✝ :: tail✝)
h: merge F (m₁ :: ms₁, head✝ :: tail✝) = m :: tl
consGoals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tlα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h✝: m₁ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])
inlα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h✝: m₂ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])
inrα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tlα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h✝: m₁ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])
inlα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h✝: m₂ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])
inrα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tlα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h✝: m₂ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])
inrα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h✝: m₁ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])
inlα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h': m₂ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])
inrα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h✝: m₁ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])
inlα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h': m₂ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])
inrα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h': m₂ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }
inrα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h': m₂ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])
inrα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h'✝: m₂ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }
h': m₂ = List.get ?m.72616 { val := ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }, isLt := (_ : ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) } < List.length ?m.72616) }
inrα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h': m₂ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }
inr.hα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h': m₂ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }List Measα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h'✝: m₁ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }
h': m₁ = List.get ?m.69393 { val := ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }, isLt := (_ : ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) } < List.length ?m.69393) }
inlα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h': m₁ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }
inl.hα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h': m₁ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }List Measα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h'✝: m₂ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }
h': m₂ = List.get ?m.72616 { val := ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }, isLt := (_ : ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) } < List.length ?m.72616) }
inrα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h': m₂ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }
inr.hα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h': m₂ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }List Measα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h✝: m₁ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])
inlα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h': m₁ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h✝: m₁ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])
inlα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h'✝: m₂ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }
h': m₂ = List.get (m :: tl) { val := ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }, isLt := (_ : ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) } < List.length (m :: tl)) }
inrα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h'✝: m₂ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }
h': m₂ = m
inrα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h'✝: m₂ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }
h': m₂ = List.get (m :: tl) { val := ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }, isLt := (_ : ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) } < List.length (m :: tl)) }
inrα✝: Type
F: Factory α✝
tl: List Meas
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h': m₂ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m₂ ∈ tl → m₂ ∈ ms₁ ∨ m₂ ∈ ms₂
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: tl
inrα✝: Type
m: Meas
F: Factory α✝
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = m :: tl
h'✝: m₂ = List.get (merge F (m₁ :: ms₁, m₂ :: ms₂)) { val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }
h': m₂ = List.get (m :: tl) { val := ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) }, isLt := (_ : ↑{ val := 0, isLt := (_ : 0 < List.length (merge F (m₁ :: ms₁, m₂ :: ms₂))) } < List.length (m :: tl)) }
inrGoals accomplished! 🐙Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
ms₂: List Meas
h_pareto₂: pareto F ms₂
h': List.Mem m tl
h_pareto₁: pareto F []
h: merge F ([], ms₂) = hd :: tl
nilα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
ms₂: List Meas
h_pareto₂: pareto F ms₂
h': List.Mem m tl
head✝: Meas
tail✝: List Meas
h_pareto₁: pareto F (head✝ :: tail✝)
h: merge F (head✝ :: tail✝, ms₂) = hd :: tl
consGoals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
ms₂: List Meas
h_pareto₂: pareto F ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: merge F (m₁ :: ms₁, ms₂) = hd :: tlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F []
h: merge F (m₁ :: ms₁, []) = hd :: tl
nilα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
head✝: Meas
tail✝: List Meas
h_pareto₂: pareto F (head✝ :: tail✝)
h: merge F (m₁ :: ms₁, head✝ :: tail✝) = hd :: tl
consα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
ms₂: List Meas
h_pareto₂: pareto F ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: merge F (m₁ :: ms₁, ms₂) = hd :: tlGoals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
ms₂: List Meas
h_pareto₂: pareto F ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: merge F (m₁ :: ms₁, ms₂) = hd :: tlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom✝: dominates F m₁ m₂ = true
first_domα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom✝: ¬dominates F m₁ m₂ = true
h_dom✝: dominates F m₂ m₁ = true
second_domα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₁.last > m₂.last
first_lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.last
second_lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h'✝: List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h': merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = trueα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h'✝: List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h': merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h: m₁ = hd ∧ merge F (ms₁, List.drop n ms₂) = tlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h'✝: List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h': merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h: m₁ = hd ∧ merge F (ms₁, List.drop n ms₂) = tl
h₁: m₁ = hd
h₂: merge F (ms₁, List.drop n ms₂) = tlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ ms₁
inlα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ List.drop n ms₂
inrα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ ms₁α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ ms₁
hα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ ms₁α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ ms₁
h.aList.Mem m ms₁α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ ms₁Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ List.drop n ms₂α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ List.drop n ms₂
hα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ List.drop n ms₂α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ List.drop n ms₂
h.aList.Mem m ms₂α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ List.drop n ms₂α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ List.drop n ms₂
h.a.aα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ List.drop n ms₂
h.a.nα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_dom: dominates F m₁ m₂ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (ms₁, List.drop n ms₂) → m ∈ merge F (ms₁, List.drop n ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (ms₁, List.drop n ms₂))
h: m₁ = m₁ ∧ merge F (ms₁, List.drop n ms₂) = merge F (ms₁, List.drop n ms₂)
h✝: m ∈ List.drop n ms₂Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h'✝: List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h': merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = trueα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h'✝: List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h': merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h: m₂ = hd ∧ merge F (List.drop n ms₁, ms₂) = tlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h'✝: List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h': merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h: m₂ = hd ∧ merge F (List.drop n ms₁, ms₂) = tl
h₁: m₂ = hd
h₂: merge F (List.drop n ms₁, ms₂) = tlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ List.drop n ms₁
inlα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ ms₂
inrα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ List.drop n ms₁α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ List.drop n ms₁
hα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ List.drop n ms₁α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ List.drop n ms₁
h.aList.Mem m ms₁α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ List.drop n ms₁α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ List.drop n ms₁
h.a.aα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ List.drop n ms₁
h.a.nα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ List.drop n ms₁Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ ms₂α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ ms₂
hα✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ ms₂α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ ms₂
h.aList.Mem m ms₂α✝: Type
m: Meas
F: Factory α✝
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h'✝: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
ih: ∀ {ms₁_1 ms₂_1 : List Meas}, pareto F ms₁_1 → pareto F ms₂_1 → merge F (ms₁_1, ms₂_1) = merge F (List.drop n ms₁, ms₂) → m ∈ merge F (List.drop n ms₁, ms₂) → m ∈ ms₁_1 ∨ m ∈ ms₂_1
h': List.Mem m (merge F (List.drop n ms₁, ms₂))
h: m₂ = m₂ ∧ merge F (List.drop n ms₁, ms₂) = merge F (List.drop n ms₁, ms₂)
h✝: m ∈ ms₂Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tlGoals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tlGoals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h✝: m ∈ ms₁
inlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h✝: m ∈ m₂ :: ms₂
inrα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h✝: m ∈ ms₁α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h✝: m ∈ ms₁
hα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h✝: m ∈ ms₁α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h✝: m ∈ ms₁
h.aList.Mem m ms₁α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h✝: m ∈ ms₁Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h✝: m ∈ m₂ :: ms₂α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h✝: m ∈ m₂ :: ms₂
hα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h✝: m ∈ m₂ :: ms₂Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.lastGoals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.lastm₁.last ≤ m₂.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.last
hm₁.last < m₂.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.lastGoals accomplished! 🐙Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
h: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
h: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tlGoals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
h: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tlGoals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝¹: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
h: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h✝: m ∈ m₁ :: ms₁
inlα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝¹: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
h: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h✝: m ∈ ms₂
inrα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝¹: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
h: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h✝: m ∈ m₁ :: ms₁α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝¹: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
h: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h✝: m ∈ m₁ :: ms₁
hα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝¹: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
h: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h✝: m ∈ m₁ :: ms₁Goals accomplished! 🐙α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.lastα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝¹: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
h: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h✝: m ∈ ms₂α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝¹: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
h: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h✝: m ∈ ms₂
hα✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝¹: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
h: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h✝: m ∈ ms₂α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝¹: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
h: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h✝: m ∈ ms₂
h.aList.Mem m ms₂α✝: Type
m: Meas
F: Factory α✝
hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → merge F (ms₁, ms₂) = tl → m ∈ tl → m ∈ ms₁ ∨ m ∈ ms₂
h': List.Mem m tl
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝¹: m₂.last > m₁.last
this: ¬m₁.last > m₂.last
h: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h✝: m ∈ ms₂Goals accomplished! 🐙lemmaGoals accomplished! 🐙merge_dom₁ (h_pareto₁ : paretoh_pareto₁: pareto F ms₁FF: ?m.82750ms₁) (ms₁: ?m.82757h_pareto₂ : paretoh_pareto₂: pareto F ms₂FF: ?m.82750ms₂) (ms₂: ?m.82767h :h: m ∈ ms₁m ∈m: ?m.82793ms₁) : ∃ms₁: ?m.82757m_better,m_better: ?m.82834m_better ∈ mergem_better: ?m.82834F ⟨F: ?m.82750ms₁,ms₁: ?m.82757ms₂⟩ ∧ dominatesms₂: ?m.82767FF: ?m.82750m_betterm_better: ?m.82834m :=m: ?m.82793Goals accomplished! 🐙α✝: Type
F: Factory α✝
m: Meas
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: m ∈ ms₁
h_merge: merge F (ms₁, ms₂) = []
nilα✝: Type
F: Factory α✝
m, head✝: Meas
tail✝: List Meas
tail_ih✝: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tail✝ → ∃ m_better, m_better ∈ tail✝ ∧ dominates F m_better m = true
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: m ∈ ms₁
h_merge: merge F (ms₁, ms₂) = head✝ :: tail✝
consα✝: Type
F: Factory α✝
m: Meas
ms₂: List Meas
h_pareto₂: pareto F ms₂
h_pareto₁: pareto F []
h: m ∈ []
h_merge: merge F ([], ms₂) = []
nilα✝: Type
F: Factory α✝
m: Meas
ms₂: List Meas
h_pareto₂: pareto F ms₂
head✝: Meas
tail✝: List Meas
h_pareto₁: pareto F (head✝ :: tail✝)
h: m ∈ head✝ :: tail✝
h_merge: merge F (head✝ :: tail✝, ms₂) = []
consGoals accomplished! 🐙Goals accomplished! 🐙Goals accomplished! 🐙Goals accomplished! 🐙Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: m ∈ ms₁
h_merge: merge F (ms₁, ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: m ∈ ms₁
h_merge: merge F (ms₁, ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
h_pareto₁: pareto F []
h: m ∈ []
h_merge: merge F ([], ms₂) = hd :: tl
nilα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
head✝: Meas
tail✝: List Meas
h_pareto₁: pareto F (head✝ :: tail✝)
h: m ∈ head✝ :: tail✝
h_merge: merge F (head✝ :: tail✝, ms₂) = hd :: tl
consα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
head✝: Meas
tail✝: List Meas
h_pareto₁: pareto F (head✝ :: tail✝)
h: m ∈ head✝ :: tail✝
h_merge: merge F (head✝ :: tail✝, ms₂) = hd :: tl
consα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: m ∈ ms₁
h_merge: merge F (ms₁, ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
h_merge: merge F (m₁ :: ms₁, ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tl
nilα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
head✝: Meas
tail✝: List Meas
h_pareto₂: pareto F (head✝ :: tail✝)
h_merge: merge F (m₁ :: ms₁, head✝ :: tail✝) = hd :: tl
consα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
h_merge: merge F (m₁ :: ms₁, ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
h_pareto₂: pareto F []
h_pareto₁: pareto F (m :: ms₁)
h_merge: merge F (m :: ms₁, []) = hd :: tl
headα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tl
a✝: List.Mem m ms₁
tailα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
h_pareto₂: pareto F []
h_pareto₁: pareto F (m :: ms₁)
h_merge: merge F (m :: ms₁, []) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
h_pareto₂: pareto F []
h_pareto₁: pareto F (m :: ms₁)
h_merge: merge F (m :: ms₁, []) = hd :: tlGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tl
h: List.Mem m ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tl
h: List.Mem m ms₁
hm ∈ tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tl
h: List.Mem m ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F []
h: List.Mem m ms₁
h_merge: m₁ = hd ∧ ms₁ = tl
hm ∈ tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tl
h: List.Mem m ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F []
h_merge: m₁ = hd ∧ ms₁ = tl
h: List.Mem m tl
hm ∈ tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tl
h: List.Mem m ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
h_merge: merge F (m₁ :: ms₁, ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom✝: dominates F m₁ m₂ = true
first_domα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom✝: ¬dominates F m₁ m₂ = true
h_dom✝: dominates F m₂ m₁ = true
second_domα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₁.last > m₂.last
first_lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.last
second_lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h': merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h': (hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
n: ℕ
h_pareto₁: pareto F (m :: ms₁)
h_merge: merge F (m :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m m₂ = true
h': (hd = m ∧ tl = merge F (ms₁, List.drop n ms₂)) ∧ ∀ (m_1 : Meas), m_1 ∈ List.take n ms₂ → dominates F m m_1 = true
headα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h': (hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
a✝: List.Mem m ms₁
tailα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
n: ℕ
h_pareto₁: pareto F (m :: ms₁)
h_merge: merge F (m :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m m₂ = true
h': (hd = m ∧ tl = merge F (ms₁, List.drop n ms₂)) ∧ ∀ (m_1 : Meas), m_1 ∈ List.take n ms₂ → dominates F m m_1 = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
n: ℕ
h_pareto₁: pareto F (m :: ms₁)
h_merge: merge F (m :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m m₂ = true
h': (hd = m ∧ tl = merge F (ms₁, List.drop n ms₂)) ∧ ∀ (m_1 : Meas), m_1 ∈ List.take n ms₂ → dominates F m m_1 = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
n: ℕ
h_pareto₁: pareto F (m :: ms₁)
h_merge: merge F (m :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m m₂ = true
h': (hd = m ∧ tl = merge F (ms₁, List.drop n ms₂)) ∧ ∀ (m_1 : Meas), m_1 ∈ List.take n ms₂ → dominates F m m_1 = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h': (hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h: List.Mem m ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h': (hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h: List.Mem m ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h': (hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h: List.Mem m ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih✝: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h': (hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h: List.Mem m ms₁
h_better: Meas
ih: h_better ∈ tl ∧ dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h': (hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h: List.Mem m ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih✝: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h': (hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h: List.Mem m ms₁
h_better: Meas
ih: h_better ∈ tl ∧ dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h': (hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h: List.Mem m ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_left: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂)
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_pareto₁: pareto F (m :: ms₁)
h_merge: merge F (m :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m m₂ = true
h_dom: dominates F m₂ m = true
headα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
a✝: List.Mem m ms₁
tailα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_pareto₁: pareto F (m :: ms₁)
h_merge: merge F (m :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m m₂ = true
h_dom: dominates F m₂ m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_pareto₁: pareto F (m :: ms₁)
h_merge: merge F (m :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m m₂ = true
h_dom: dominates F m₂ m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_pareto₁: pareto F (m :: ms₁)
h_merge: merge F (m :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m m₂ = true
h_dom: dominates F m₂ m = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: List.Mem m ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: List.Mem m ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: List.Mem m ms₁m ∈ ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: m ∈ ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: List.Mem m ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: m ∈ ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: m ∈ ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: List.Mem m ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: m ∈ ms₁
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: m ∈ List.take n ms₁ ++ List.drop n ms₁
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: m ∈ ms₁
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: m ∈ List.take n ms₁ ∨ m ∈ List.drop n ms₁
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: m ∈ List.take n ms₁ ∨ m ∈ List.drop n ms₁
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: m ∈ List.take n ms₁ ∨ m ∈ List.drop n ms₁
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: List.Mem m ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h✝: m ∈ List.take n ms₁
inlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h✝: m ∈ List.drop n ms₁
inrα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: List.Mem m ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h: m ∈ List.take n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h: m ∈ List.take n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h: m ∈ List.take n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h: m ∈ List.take n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h: m ∈ List.take n ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h: List.Mem m ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = true
leftα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = true
rightα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = true
leftα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = true
aList.Mem h_better tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h_left: hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)
h_take_drop: ms₁ = List.take n ms₁ ++ List.drop n ms₁
h_mem: m ∈ List.drop n ms₁
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_pareto₁: pareto F (m :: ms₁)
h_non_dom₁: ¬dominates F m m₂ = true
h_non_dom₂: ¬dominates F m₂ m = true
h_last: m.last > m₂.last
h_merge: m = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
headα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
a✝: List.Mem m ms₁
tailα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_pareto₁: pareto F (m :: ms₁)
h_non_dom₁: ¬dominates F m m₂ = true
h_non_dom₂: ¬dominates F m₂ m = true
h_last: m.last > m₂.last
h_merge: m = hd ∧ merge F (ms₁, m₂ :: ms₂) = tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_pareto₁: pareto F (m :: ms₁)
h_non_dom₁: ¬dominates F m m₂ = true
h_non_dom₂: ¬dominates F m₂ m = true
h_last: m.last > m₂.last
h_merge: m = hd ∧ merge F (ms₁, m₂ :: ms₂) = tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁: List Meas
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_pareto₁: pareto F (m :: ms₁)
h_non_dom₁: ¬dominates F m m₂ = true
h_non_dom₂: ¬dominates F m₂ m = true
h_last: m.last > m₂.last
h_merge: m = hd ∧ merge F (ms₁, m₂ :: ms₂) = tlGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h_mem: List.Mem m ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h_mem: List.Mem m ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h_mem: List.Mem m ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h_mem: List.Mem m ms₁
m_better: Meas
h: m_better ∈ tl ∧ dominates F m_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h_mem: List.Mem m ms₁α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h_mem: List.Mem m ms₁
m_better: Meas
h: m_better ∈ tl ∧ dominates F m_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
h_mem: List.Mem m ms₁Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tlGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tlGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h✝: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
m_better: Meas
h: m_better ∈ tl ∧ dominates F m_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h✝: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
m_better: Meas
h: m_better ∈ tl ∧ dominates F m_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₁ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h: m ∈ m₁ :: ms₁
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastGoals accomplished! 🐙lemmaGoals accomplished! 🐙merge_dom₂ (h_pareto₁ : paretoh_pareto₁: pareto F ms₁FF: ?m.111905ms₁) (ms₁: ?m.111912h_pareto₂ : paretoh_pareto₂: pareto F ms₂FF: ?m.111905ms₂) (ms₂: ?m.111922h :h: m ∈ ms₂m ∈m: ?m.111948ms₂) : ∃ms₂: ?m.111922m_better,m_better: ?m.111989m_better ∈ mergem_better: ?m.111989F ⟨F: ?m.111905ms₁,ms₁: ?m.111912ms₂⟩ ∧ dominatesms₂: ?m.111922FF: ?m.111905m_betterm_better: ?m.111989m :=m: ?m.111948Goals accomplished! 🐙α✝: Type
F: Factory α✝
m: Meas
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
h_merge: merge F (ms₁, ms₂) = []
nilα✝: Type
F: Factory α✝
m, head✝: Meas
tail✝: List Meas
tail_ih✝: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tail✝ → ∃ m_better, m_better ∈ tail✝ ∧ dominates F m_better m = true
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
h_merge: merge F (ms₁, ms₂) = head✝ :: tail✝
consα✝: Type
F: Factory α✝
m: Meas
ms₂: List Meas
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
h_pareto₁: pareto F []
h_merge: merge F ([], ms₂) = []
nilα✝: Type
F: Factory α✝
m: Meas
ms₂: List Meas
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
head✝: Meas
tail✝: List Meas
h_pareto₁: pareto F (head✝ :: tail✝)
h_merge: merge F (head✝ :: tail✝, ms₂) = []
consGoals accomplished! 🐙Goals accomplished! 🐙Goals accomplished! 🐙Goals accomplished! 🐙Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
h_merge: merge F (ms₁, ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
h_pareto₁: pareto F []
h_merge: merge F ([], ms₂) = hd :: tl
nilα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
head✝: Meas
tail✝: List Meas
h_pareto₁: pareto F (head✝ :: tail✝)
h_merge: merge F (head✝ :: tail✝, ms₂) = hd :: tl
consα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
h_merge: merge F (ms₁, ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
h_pareto₁: pareto F []
h_merge: merge F ([], ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
h_pareto₁: pareto F []
h_merge: merge F ([], ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
h_pareto₁: pareto F []
h_merge: merge F ([], ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
h_pareto₁: pareto F []
h_merge: merge F ([], ms₂) = hd :: tlGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₁, ms₂: List Meas
h_pareto₁: pareto F ms₁
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
h_merge: merge F (ms₁, ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_merge: merge F (m₁ :: ms₁, ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F []
h: m ∈ []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tl
nilα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
head✝: Meas
tail✝: List Meas
h_pareto₂: pareto F (head✝ :: tail✝)
h: m ∈ head✝ :: tail✝
h_merge: merge F (m₁ :: ms₁, head✝ :: tail✝) = hd :: tl
consα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_merge: merge F (m₁ :: ms₁, ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_pareto₂: pareto F []
h: m ∈ []
h_merge: merge F (m₁ :: ms₁, []) = hd :: tlGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
ms₂: List Meas
h_pareto₂: pareto F ms₂
h: m ∈ ms₂
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
h_merge: merge F (m₁ :: ms₁, ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom✝: dominates F m₁ m₂ = true
first_domα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom✝: ¬dominates F m₁ m₂ = true
h_dom✝: dominates F m₂ m₁ = true
second_domα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₁.last > m₂.last
first_lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h✝: m₂.last > m₁.last
second_lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_left: merge F (m₁ :: ms₁, m₂ :: ms₂) = m₁ :: merge F (ms₁, List.drop n ms₂)
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
ms₂: List Meas
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_pareto₂: pareto F (m :: ms₂)
h_merge: merge F (m₁ :: ms₁, m :: ms₂) = hd :: tl
h_dom: dominates F m₁ m = true
headα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
a✝: List.Mem m ms₂
tailα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
ms₂: List Meas
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_pareto₂: pareto F (m :: ms₂)
h_merge: merge F (m₁ :: ms₁, m :: ms₂) = hd :: tl
h_dom: dominates F m₁ m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
ms₂: List Meas
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_pareto₂: pareto F (m :: ms₂)
h_merge: merge F (m₁ :: ms₁, m :: ms₂) = hd :: tl
h_dom: dominates F m₁ m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
ms₂: List Meas
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_pareto₂: pareto F (m :: ms₂)
h_merge: merge F (m₁ :: ms₁, m :: ms₂) = hd :: tl
h_dom: dominates F m₁ m = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: List.Mem m ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: List.Mem m ms₂Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: List.Mem m ms₂m ∈ ms₂Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: m ∈ ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: List.Mem m ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: m ∈ ms₂Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: m ∈ ms₂Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: List.Mem m ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: m ∈ ms₂
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: m ∈ List.take n ms₂ ++ List.drop n ms₂
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: m ∈ ms₂
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: m ∈ List.take n ms₂ ∨ m ∈ List.drop n ms₂
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: m ∈ List.take n ms₂ ∨ m ∈ List.drop n ms₂
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: m ∈ List.take n ms₂ ∨ m ∈ List.drop n ms₂
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: List.Mem m ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h✝: m ∈ List.take n ms₂
inlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h✝: m ∈ List.drop n ms₂
inrα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: List.Mem m ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h: m ∈ List.take n ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h: m ∈ List.take n ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h: m ∈ List.take n ms₂Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h: List.Mem m ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = true
leftα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = true
rightα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = true
leftα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = true
aList.Mem h_better tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_dom: dominates F m₁ m₂ = true
n: ℕ
h_right: ∀ (m : Meas), m ∈ List.take n ms₂ → dominates F m₁ m = true
h_left: hd = m₁ ∧ tl = merge F (ms₁, List.drop n ms₂)
h_take_drop: ms₂ = List.take n ms₂ ++ List.drop n ms₂
h_mem: m ∈ List.drop n ms₂
h_better: Meas
h₁: h_better ∈ tl
h₂: dominates F h_better m = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h': merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h': (hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
ms₂: List Meas
n: ℕ
h_pareto₂: pareto F (m :: ms₂)
h_merge: merge F (m₁ :: ms₁, m :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m = true
h_dom: dominates F m m₁ = true
h': (hd = m ∧ tl = merge F (List.drop n ms₁, ms₂)) ∧ ∀ (m_1 : Meas), m_1 ∈ List.take n ms₁ → dominates F m m_1 = true
headα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h': (hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
a✝: List.Mem m ms₂
tailα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
ms₂: List Meas
n: ℕ
h_pareto₂: pareto F (m :: ms₂)
h_merge: merge F (m₁ :: ms₁, m :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m = true
h_dom: dominates F m m₁ = true
h': (hd = m ∧ tl = merge F (List.drop n ms₁, ms₂)) ∧ ∀ (m_1 : Meas), m_1 ∈ List.take n ms₁ → dominates F m m_1 = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
ms₂: List Meas
n: ℕ
h_pareto₂: pareto F (m :: ms₂)
h_merge: merge F (m₁ :: ms₁, m :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m = true
h_dom: dominates F m m₁ = true
h': (hd = m ∧ tl = merge F (List.drop n ms₁, ms₂)) ∧ ∀ (m_1 : Meas), m_1 ∈ List.take n ms₁ → dominates F m m_1 = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
ms₂: List Meas
n: ℕ
h_pareto₂: pareto F (m :: ms₂)
h_merge: merge F (m₁ :: ms₁, m :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m = true
h_dom: dominates F m m₁ = true
h': (hd = m ∧ tl = merge F (List.drop n ms₁, ms₂)) ∧ ∀ (m_1 : Meas), m_1 ∈ List.take n ms₁ → dominates F m m_1 = trueGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h': (hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h: List.Mem m ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h': (hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h: List.Mem m ms₂Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h': (hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h: List.Mem m ms₂Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih✝: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h': (hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h: List.Mem m ms₂
h_better: Meas
ih: h_better ∈ tl ∧ dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h': (hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h: List.Mem m ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih✝: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h': (hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h: List.Mem m ms₂
h_better: Meas
ih: h_better ∈ tl ∧ dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom: ¬dominates F m₁ m₂ = true
h_dom: dominates F m₂ m₁ = true
n: ℕ
h': (hd = m₂ ∧ tl = merge F (List.drop n ms₁, ms₂)) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
h: List.Mem m ms₂Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tlGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tlGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h✝: m ∈ m₂ :: ms₂
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
m_better: Meas
h: m_better ∈ tl ∧ dominates F m_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h✝: m ∈ m₂ :: ms₂
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.last
h_merge: m₁ = hd ∧ merge F (ms₁, m₂ :: ms₂) = tl
m_better: Meas
h: m_better ∈ tl ∧ dominates F m_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_last: m₁.last > m₂.lastGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
ms₂: List Meas
h_pareto₂: pareto F (m :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F m m₁ = true
h_last: ¬m.last < m₁.last
h_merge: m = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
headα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
a✝: List.Mem m ms₂
tailα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
ms₂: List Meas
h_pareto₂: pareto F (m :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F m m₁ = true
h_last: ¬m.last < m₁.last
h_merge: m = hd ∧ merge F (m₁ :: ms₁, ms₂) = tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
ms₂: List Meas
h_pareto₂: pareto F (m :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F m m₁ = true
h_last: ¬m.last < m₁.last
h_merge: m = hd ∧ merge F (m₁ :: ms₁, ms₂) = tlα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
ms₂: List Meas
h_pareto₂: pareto F (m :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m = true
h_non_dom₂✝: ¬dominates F m m₁ = true
h_last: ¬m.last < m₁.last
h_merge: m = hd ∧ merge F (m₁ :: ms₁, ms₂) = tlGoals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h: m ∈ m₂ :: ms₂
h_merge: merge F (m₁ :: ms₁, m₂ :: ms₂) = hd :: tl
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: m₂.last > m₁.lastα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h_mem: List.Mem m ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h_mem: List.Mem m ms₂Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h_mem: List.Mem m ms₂Goals accomplished! 🐙α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h_mem: List.Mem m ms₂
h_better: Meas
h: h_better ∈ tl ∧ dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h_mem: List.Mem m ms₂α✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h_mem: List.Mem m ms₂
h_better: Meas
h: h_better ∈ tl ∧ dominates F h_better m = trueα✝: Type
F: Factory α✝
m, hd: Meas
tl: List Meas
ih: ∀ {ms₁ ms₂ : List Meas}, pareto F ms₁ → pareto F ms₂ → m ∈ ms₂ → merge F (ms₁, ms₂) = tl → ∃ m_better, m_better ∈ tl ∧ dominates F m_better m = true
m₁: Meas
ms₁: List Meas
h_pareto₁: pareto F (m₁ :: ms₁)
m₂: Meas
ms₂: List Meas
h_pareto₂: pareto F (m₂ :: ms₂)
h_non_dom₁✝: ¬dominates F m₁ m₂ = true
h_non_dom₂✝: ¬dominates F m₂ m₁ = true
h_last: ¬m₂.last < m₁.last
h_merge: m₂ = hd ∧ merge F (m₁ :: ms₁, ms₂) = tl
h_mem: List.Mem m ms₂Goals accomplished! 🐙Goals accomplished! 🐙